import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * @Title FileReader读取文件
 * @Description FileInputStream并无太大差异：两者的区别就是读取的单位不同。
 * 若操作的文件不是文本文件，则建议使用FileInputStream和FileOutputStream进行文件的输入输出。
 * 补充：根据不同的编码方案，一个字符可能会相当于一个或者多个字节。
 * @Author CAI ZHAI
 * @Date 2021/12/1 21:26
 **/
public class Reader0{
    
    public static void main(String[] args) throws Exception{
        //Reader1();
        Reader2();
    }
    
    /**
     * @Description FileReader读取文件
     **/
    private static void Reader1() throws Exception{
        FileWriter out = new FileWriter("D:\\06data\\test.txt");
        out.write ("www.51gjie.com"); //在此可以直接写入字符串，不用转化为字节数组
        out.close();
    
        char[] buf = new char[1024];  //字符数组
        FileReader in = new FileReader("D:\\06data\\test.txt");
        int len = in.read(buf);  //此时的read方法可以读取一个字符或几个字符,len代表实际读取到的字符的个数。
        System.out.println(new String(buf,0,1024)); //String构造函数把字符数组转化为字符串。
        in.close();
    }
    
    /**
     * @Description BufferedReader一次读取一块数据，提高IO读写效率
     **/
    private static void Reader2() throws Exception{
        // TODO 自动生成的方法存根
        BufferedReader buf = null;              //声明BufferedReader对象
        buf = new BufferedReader(new InputStreamReader(System.in)); //实例化BufferedReader对象
        String str = null;                              //接收输入内容
        System.out.print("请输入内容：");
        try{
            str = buf.readLine();  //读取一行内容
        }catch(IOException e){
            e.printStackTrace();
        }
        System.out.println("输入的内容："+str);
    }
    
    /**
     * @Description InputStreamReader字节流向字符流转换
     **/
    private static void Reader3() throws Exception{
        /**
         * 使用缓冲区 可以使用缓冲区对象的 read() 和  readLine()方法。
         */
        //读取字节流
        //InputStream in = System.in;//读取键盘上的数据
        InputStream in = new FileInputStream("D:\\demo.txt");//读取文件上的数据。
        //将字节流向字符流的转换。
        InputStreamReader isr = new InputStreamReader(in);//读取
        //创建字符流缓冲区
        BufferedReader bufr = new BufferedReader(isr);//缓冲
        //BufferedReader bufr = new BufferedReader(
        //new InputStreamReader(new FileInputStream("D:\\demo.txt")));可以综合到一句。
        /*int ch =0;
        ch = bufr.read();
        System.out.println((char)ch);
        */
        String line;
        while((line = bufr.readLine())!=null){
            System.out.println(line);
        }
        isr.close();
    }
}
